﻿using System;
// 泛型中声明类型参数——占位符类型，有泛型的使用者填充，它支持类型变量。

namespace _064_泛型
{
    // 只有在类或方法的内部，T才可以被定义为类型参数：
    public class Stack<T>
    {
        int position;
        T[] data = new T[100];
        public void Push(T obj) { data[position++] = obj; }
        public T Pop() { return data[--position]; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Stack<int> stack = new Stack<int>();
            stack.Push(5);
            stack.Push(10);
            int x = stack.Pop(); // x是10
            int y = stack.Pop(); // y是5

            //var stack1 = new Stack<T>(); // 不合法：T是什么类型？
        }
    }
}
